﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using _4.Modelado.Seguridad;

namespace _3.Datos.Seguridad
{
   public  class UsuarioBD
    {

        public void GuardarUsuario(SqlCommand comando, Usuario obj)
        {
            try
            {
                string sp = "usp_UsuarioGuardar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_Usuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@UsNombre", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@UsPrimerApellido", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@UsSegundoApellido", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@UsLogin", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@UsContrasena", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@UsCorreo", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@UsTelefono", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@FK_Area_Usuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Perfil_Usuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@UsBloqueado", SqlDbType.Bit));
                


                comando.Parameters[0].Value = obj.iPK_Usuario;
                comando.Parameters[1].Value = obj.sUsNombre;
                comando.Parameters[2].Value = obj.sUsPrimerApellido;
                comando.Parameters[3].Value = obj.sUsSegundoApellido;
                comando.Parameters[4].Value = obj.sUsLogin;
                comando.Parameters[5].Value = obj.sUsContrasena;
                comando.Parameters[6].Value = obj.sUsCorreo;
                comando.Parameters[7].Value = obj.sUsTelefono;
                comando.Parameters[8].Value = obj.icodArea;
                comando.Parameters[9].Value = obj.icodPerfil;
                comando.Parameters[10].Value = obj.bUsBloqueado;
                
                


                comando.ExecuteNonQuery();

            }
            catch (Exception exc)
            {

                throw exc;
            }
        }

     
        public List<Usuario> ConsultarUsuarios(SqlCommand comando)
        {
            try
            {
                string sp = "usp_UsuariosConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                var lista = new List<Usuario>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                   var obj = new Usuario();
                   obj.iPK_Usuario = Convert.ToInt32(dt.Rows[i]["PK_Usuario"]);
                    obj.icodPerfil = Convert.ToInt32(dt.Rows[i]["codPerfil"]);
                    obj.icodArea = Convert.ToInt32(dt.Rows[i]["codArea"]);
                    obj.sPerfil = dt.Rows[i]["perfil"].ToString();
                    obj.sArea = dt.Rows[i]["area"].ToString();
                    obj.sUsNombre = dt.Rows[i]["UsNombre"].ToString();
                    obj.sUsPrimerApellido = dt.Rows[i]["UsPrimerApellido"].ToString();
                    obj.sUsSegundoApellido = dt.Rows[i]["UsSegundoApellido"].ToString();
                    obj.sUsLogin = dt.Rows[i]["UsLogin"].ToString();
                    obj.sUsContrasena = dt.Rows[i]["UsContrasena"].ToString();
                    obj.sUsCorreo = dt.Rows[i]["UsCorreo"].ToString();
                    obj.sUsTelefono = dt.Rows[i]["UsTelefono"].ToString();
                    obj.bUsBloqueado = Convert.ToBoolean(dt.Rows[i]["UsBloqueado"]);

                    lista.Add(obj);
                }
                return lista;
            }
            catch (Exception exc)
            {

                throw exc;
            }
        }
    

        public void EliminarUsuario(SqlCommand comando, Usuario obj)
        {
            try
            {
                string sp = "usp_UsuarioEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@CodUsuario", SqlDbType.VarChar));
                comando.Parameters[0].Value = obj.iPK_Usuario;


                comando.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }
        }
    }
}
